package tema8.ej05.controller;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import tema8.ej05.model.AficionDAO;
import tema8.ej05.model.PaisDAO;
import tema8.ej05.model.PersonaDAO;
import tema8.ej05.model.bo.Aficion;
import tema8.ej05.model.bo.Pais;
import tema8.ej05.model.bo.Persona;

@WebServlet("/PersonaCrear")
public class PersonaCrearController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		PaisDAO paisDAO = new PaisDAO();
		List<Pais> paises = paisDAO.recuperarPaises();

		AficionDAO aficionDAO = new AficionDAO();
		List<Aficion> aficiones = aficionDAO.recuperarAficiones();

		request.setAttribute("paises", paises);
		request.setAttribute("aficiones", aficiones);

		request.getRequestDispatcher("/tema8/ej05/personaCrear.jsp").forward(
				request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		Persona persona = new Persona(request.getParameter("nombre"));

		AficionDAO aficionDAO = new AficionDAO();
		String[] idsAficiones = request.getParameterValues("aficiones[]");

		for (String id : idsAficiones) {
			Aficion aficion = aficionDAO.getAficionPorID(Long.parseLong(id));
			persona.getAficiones().add(aficion);
			aficion.getPersonas().add(persona);
		}
		
		Long idPais = Long.parseLong(request.getParameter("paisOrigen"));
		PaisDAO paisDao = new PaisDAO();
		Pais pais = paisDao.getPaisPorID(idPais);

		persona.setPaisOrigen(pais);
		pais.getPersonasNativas().add(persona);

		PersonaDAO personaDAO = new PersonaDAO();
		personaDAO.crearPersona(persona);

		request.getRequestDispatcher("/PersonaRecuperar").forward(request,
				response);
	}

}
